1.LINE Official Account Manager
2.LINE Developer Console
今年九月後Messaging API Channel的申請流程有經過變更: 以往可以直接在 LINE Developers Console 建立 Messaging API Channel,現在則改為需要透過 LINE Official Account Manager 來啟用
圖: LINE Official Account Manager
登入 LINE Developers 後,進入 LINE Official Account Manager。點選左側的 建立,依照流程填寫基本資料後,即可啟用一個新的官方帳號。
圖: 建立帳號
圖: 填寫基本資料
填寫完成後,回到帳號一覽畫面(點選左上角的LINE Official Account Manager 圖示),選擇要啟用的帳號。點選 聊天 -> 左側的設定 -> Messaging API,來啟用Messaging API。
圖:點選要啟用的帳號
圖: 啟用Messaging API
接下來,設定 Webhook。首先,要準備好Webhook的目的端URL,這個URL將會收到來自LINE Platform的資訊。
新版流程中,一旦設定完成並按下儲存後,LINE就會馬上對這個URL送出測試API request,如果目的端沒有回應Succces,就不會更新Webhook URL。
圖: 設定Webhook的目的端URL
由於到目前為止,我們還沒準備好接收訊息的API,你可以暫時輸入一個安全的測試網址 (例如https://google.com),或跳過這個步驟。
設定好後,就可以再回到選聊天-> 啟用Webhook。從此,使用者發送給官方帳號的訊息,將會被放入Webhook的 Request Body裡。
需注意,Webhook的Http Method固定為POST。
圖:啟用Webhook
官方帳號的所有溝通都是透過Channel,而每次傳送資料時,都必須攜帶Channel Access Token,來驗證訊息來源的合法性。
LINE提供了4種Access Token,主要差別在於Expired Time(過期時間)
為了開發方便,我們通常會選擇不會過期的Long-lived Token,這種Token只能在LINE Developer頁面才能取得,點選LINE Developer Console -> 選擇帳號 -> 從Messaging API取得Token
圖:點選右上角的LINE Developer Console (注意: 不是LINE Official Account Manager)
圖: 選擇帳號
圖: 從Messaging API取得Token
請注意: 不要將Channel Access Token外流,也不要也不要將Token推送到Git上。雖然大家都習慣避免在程式中硬寫密碼,但Token通常會擺在外部設定檔內,稍不注意很容易不小心上傳到公開的Git。
一個Webhook的request body如下:
在Webhook中,所有和使用者或LINE官方帳號的互動的行為,都是一個事件,這些事件會以陣列的形式存放在 events 裡。
每個事件包含不同的類型,例如訊息事件(Message Event)表示使用者發送輸入訊息,加入好友事件(Follow event)則表示使用者把這個帳號加入好友。
事件的類型可參考Webhook 事件類型
LINE Bot 可以傳送的訊息類型有多種,具體內容可參考訊息類型。本專案中,主要使用的是 Reply Message,以使用者的訊息作為後續邏輯處理的驅動。
每個月 LINE 提供免費訊息傳送的額度,詳細的計費方案可以參考LINE官方帳號方案價格調整
以上是LINE Bot的相關基礎知識。原本這個章節沒打算介紹這麼多操作步驟,但實際使用新版流程後,發現還是有些細節需要額外說明,特別是 LINE Official Account Manager 和 LINE Developers Console 之間的切換,流程比預期的稍微複雜了一些,因此多截了一些圖來輔助說明。
現在,對於Webhook的結構和運作流程有了一定的掌握,接下來我們就可以開始準備Server端以及AWS的環境架設,進一步發展 LineBot 的功能了。
Citation
https://developers.line.biz/en/docs/basics/channel-access-token/#channel-access-token-types
https://developers.line.biz/en/news/2024/09/04/no-longer-possible-to-create-messaging-api-channels-from-console/